﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;

namespace Common
{
	/// <summary>
    /// 资源管理类：提供Resoure加载资源的相关功能
    /// </summary>
	public class ResourceManager {
        private static Dictionary<string, string> resMap;
        //静态构造函数
        //执行时机：类被加载时执行，在静态方法之前
        static ResourceManager()
        {
            //BuildMap();//这样new字典只会做一次
            Load();
        }
        ////读取配置文件
        //private static string GetConfigFile()//string path需要更改
        //{
        //    //构建路径
        //    string configPath = Application.streamingAssetsPath + "/Resconfig.txt";
        //    if (Application.platform != RuntimePlatform.Android)
        //    {
        //        configPath = "file://" + configPath;//如果是安卓平台则是"jar:file://"
        //    }
        //    //加载文件
        //    WWW www = new WWW(configPath);//又可以访问外网WWW www = new WWW("http://");，又可以访问本地
        //    while (true)
        //    {
        //        //是否加载完成
        //        if (www.isDone)
        //        {
        //            return www.text;
        //        }
        //    }
        //}

        //形成数据结构Dictionary<string 资源名称,string 完整路径>
        //private static void BuildMap()
        //{
        //    string strConfig = ConfigruationReader.GetConfigFile("Resconfig.txt");
        //    resMap = new Dictionary<string, string>();
        //    //字符串读取器：逐行读取
        //    StringReader reader = new StringReader(strConfig);
        //    //如果读取到内容，则不为null
        //    //string line = reader.ReadLine();
        //    //while (line != null)
        //    //{
        //    //    string[] keyValue = line.Split('=');
        //    //    resMap.Add(keyValue[0], keyValue[1]);
        //    //    line = reader.ReadLine();
        //    //}

        //    string line = null;
        //    while ((line = reader.ReadLine()) != null)
        //    {
        //        string[] keyValue = line.Split('=');
        //        resMap.Add(keyValue[0], keyValue[1]);
        //    }
        //    //如果读取到内容，则不为空

        //}
        //提供加载资源的方法
        private static void Load()
        {
            resMap = new Dictionary<string, string>();
            string configFile = ConfigruationReader.GetConfigFile("Resconfig.txt");
            ConfigruationReader.BuildMap(configFile, resMap, BuildMapHandler);
        }

        private static void BuildMapHandler(Dictionary<string, string> dic, string line)
        {
            string[] keyValue = line.Split('=');
            dic.Add(keyValue[0], keyValue[1]);
        }

        public static T Load<T>(string resName) where T: UnityEngine.Object
        {
            //根据资源名 查找路径
            string path = resMap[resName];
            //加载资源
            return Resources.Load<T>(path);
        }
	}
}

